package xml.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Random;

import noNamespace.NagrodyDocument;
import noNamespace.Kontynent.Enum;
import noNamespace.NagrodyDocument.Factory;
import noNamespace.NagrodyDocument.Nagrody;
import noNamespace.NagrodyDocument.Nagrody.Nagroda;
import noNamespace.NagrodyDocument.Nagrody.Osoba;
import noNamespace.NagrodyDocument.Nagrody.Osoba.InnaNagroda;
import noNamespace.NagrodyDocument.Nagrody.Osoba.Publikacja;
import noNamespace.NagrodyDocument.Nagrody.Osoba.Urodzony;

import org.apache.xmlbeans.XmlCalendar;

public class Turing {

	private static final File DIRECTORY = new File("/home/lookas/Desktop");
	private static PrintStream stdout = System.out;
	private static BufferedReader stdin = new BufferedReader(
			new InputStreamReader(System.in));

	public static void main(String[] args) throws IOException {

		NagrodyDocument doc = Factory.newInstance();
		Nagrody nagrody = doc.addNewNagrody();

		stdout.print("Podaj rok nagrody >");
		try {
			String line = stdin.readLine();
			while (!line.equals("")) {
				Nagroda nagroda = nagrody.addNewNagroda();
				Calendar rok = Calendar.getInstance();
				rok.set(Calendar.YEAR, Integer.parseInt(line));
				nagroda.setRok(rok);

				stdout.print("Uzasadnienie >");
				line = stdin.readLine();
				nagroda.setUzasadnienie(line);

				stdout.print("Tag >");
				line = stdin.readLine();
				while (!line.equals("")) {
					nagroda.addNewTag().setStringValue(line);
					stdout.print("Tag >");
					line = stdin.readLine();
				}

				stdout.print("Nagrodzony (nazwisko) >");
				line = stdin.readLine();
				while (!line.equals("")) {
					String id = String.format("N%d",
							new Random().nextInt(89) + 10);
					nagroda.addNewNagrodzony().setIdref(id);

					Osoba osoba = nagrody.addNewOsoba();
					osoba.setId(id);
					osoba.setNazwisko(line);

					stdout.print("Imie >");
					line = stdin.readLine();
					while (!line.equals("")) {
						osoba.addNewImie().setStringValue(line);
						stdout.print("Imie >");
						line = stdin.readLine();
					}

					stdout.print("Plec >");
					line = stdin.readLine();
					osoba.setPlec(line);

					Urodzony urodzony = osoba.addNewUrodzony();
					stdout.print("Urodzony >");
					line = stdin.readLine();
					urodzony.setData(new XmlCalendar(DateFormat
							.getDateInstance().parse(line)));
					for (int i = 1; i <= 7; i++) {
						stdout.print(i + "=" + Enum.forInt(i) + ", ");
					}
					stdout.print("\nKontynent >");
					line = stdin.readLine();
					urodzony.setKontynent(Enum.forInt(Integer.parseInt(line)));
					stdout.print("Kraj >");
					line = stdin.readLine();
					urodzony.setStringValue(line);

					stdout.print("Zmarl >");
					line = stdin.readLine();
					if (!line.equals(""))
						osoba.addNewZmarl().setData(
								new XmlCalendar(DateFormat.getDateInstance()
										.parse(line)));

					stdout.print("Inna nagroda (rok) >");
					line = stdin.readLine();
					while (!line.equals("")) {
						InnaNagroda nagroda2 = osoba.addNewInnaNagroda();
						Calendar tmp = Calendar.getInstance();
						tmp.set(Calendar.YEAR, Integer.parseInt(line));
						nagroda2.setData(tmp);
						stdout.print("Nazwa nagrody >");
						line = stdin.readLine();
						nagroda2.setStringValue(line);
						stdout.print("Inna nagroda (rok) >");
						line = stdin.readLine();
					}

					stdout.print("Publikacja (rok) >");
					line = stdin.readLine();
					while (!line.equals("")) {
						Publikacja publikacja = osoba.addNewPublikacja();
						Calendar tmp = Calendar.getInstance();
						tmp.set(Calendar.YEAR, Integer.parseInt(line));
						publikacja.setData(tmp);
						stdout.print("Tytul >");
						line = stdin.readLine();
						publikacja.setStringValue(line);
						stdout.print("Publikacja (rok) >");
						line = stdin.readLine();
					}

					stdout.print("Zdjecie >");
					line = stdin.readLine();
					if (!line.equals(""))
						osoba.addNewZdjecie().setSrc(line);

					stdout.print("Nagrodzony (nazwisko) >");
					line = stdin.readLine();
				}
				stdout.print("Podaj rok nagrody >");
				line = stdin.readLine();
			}
		} catch (Exception e) {
			stdout.println("ERROR");
		} finally {
			File backup = File.createTempFile("turing", ".xml", DIRECTORY);
			doc.save(backup);
		}
		File xmlFile = new File(DIRECTORY, "test.xml");
		doc.save(xmlFile);
	}
}